Systems and methods for providing a user interface for an environment that includes virtual objects

ABSTRACT

Systems and methods for providing and/or presenting, to a user, a user interface for an environment that includes virtual objects are disclosed. Exemplary implementations may: obtain, from electronic storage, information regarding virtual objects in a virtual three-dimensional space that has a virtual three-dimensional volume; determine a subset of voxels from the set of voxels such that the subset of voxels encompasses a three-dimensional volume that includes at least part of a first external surface of the first virtual object; determine proximity information for the first virtual object; determine a manipulation granularity; adjust the manipulation granularity based on the proximity information; receive particular user input from the user having a particular input magnitude; manipulate the first virtual object within the virtual three-dimensional space in accordance with the received particular user input; and effectuate presentation of the user interface to the user through a client computing platform.

FIELD OF THE DISCLOSURE

The present disclosure relates to systems and methods for providing, tousers, user interfaces for environments that includes virtual objects.

BACKGROUND

Virtual environments that include virtual objects are known, e.g. asused in Virtual Reality (VR) technology and Augmented Reality (AR)technology.

SUMMARY

One aspect of the present disclosure relates to a system configured forproviding, to a user, a user interface for an environment that includesvirtual objects. The system may include one or more hardware processorsconfigured by machine-readable instructions. The processor(s) may beconfigured to obtain, from electronic storage, information regardingvirtual objects in a virtual three-dimensional space. The virtualthree-dimensional space may have a virtual three-dimensional volume. Thevirtual objects may include a first virtual object. The virtualthree-dimensional space may include a set of voxels. Individual voxelsmay correspond to individual virtual three-dimensional volumes withinthe virtual three-dimensional space such that the virtualthree-dimensional space is divided as the three-dimensional volumes ofthe set of voxels. Individual voxels may be associated with individualdistance values. The individual distance values may represent distancesfrom the individual voxels to real or virtual surfaces, e.g., within thevirtual three-dimensional space. The processor(s) may be configured todetermine a subset of voxels from the set of voxels such that the subsetof voxels encompasses a three-dimensional volume that includes at leastpart of a first external surface of the first virtual object. Theprocessor(s) may be configured to determine proximity information forthe first virtual object. Determination of the proximity information maybe based on aggregating a set of distance values for the determinedsubset of voxels. A reduction in magnitude of the proximity informationmay correspond to a reduction in one or more distances between the firstvirtual object and one or more real or virtual surfaces, e.g., withinthe virtual three-dimensional space. The processor(s) may be configuredto determine a manipulation granularity. The manipulation granularitymay correlate an input magnitude of user input to an output magnitude ofone or more manipulations of the first virtual object within the virtualthree-dimensional space. The one or more manipulations may include oneor more of translation, rotation, transformation, and/or othermanipulations. The processor(s) may be configured to adjust themanipulation granularity based on the proximity information. Adjustmentof the manipulation granularity may be performed such that the reductionin magnitude of the proximity information corresponds to an increase inthe manipulation granularity. The processor(s) may be configured toreceive particular user input from the user having a particular inputmagnitude. The particular user input may represent a request tomanipulate the first virtual object within the virtual three-dimensionalspace. The processor(s) may be configured to manipulate the firstvirtual object within the virtual three-dimensional space in accordancewith the received particular user input. A particular output magnitudeof the manipulation of the first virtual object as requested may bebased on the particular input magnitude and the adjusted manipulationgranularity. The processor(s) may be configured to effectuatepresentation of the user interface to the user through a clientcomputing platform. The user interface may depict the manipulation ofthe first virtual object within the virtual three-dimensional space.

Another aspect of the present disclosure relates to a method forproviding, to a user, a user interface for an environment that includesvirtual objects. The method may include obtaining, from electronicstorage, information regarding virtual objects in a virtualthree-dimensional space. The virtual three-dimensional space may have avirtual three-dimensional volume. The virtual objects may include afirst virtual object. The virtual three-dimensional space may include aset of voxels. Individual voxels may correspond to individual virtualthree-dimensional volumes within the virtual three-dimensional spacesuch that the virtual three-dimensional space is divided as thethree-dimensional volumes of the set of voxels. Individual voxels may beassociated with individual distance values. The individual distancevalues may represent distances from the individual voxels to real orvirtual surfaces, e.g., within the virtual three-dimensional space. Themethod may include determining a subset of voxels from the set of voxelssuch that the subset of voxels encompasses a three-dimensional volumethat includes at least part of a first external surface of the firstvirtual object. The method may include determining proximity informationfor the first virtual object. Determination of the proximity informationmay be based on aggregating a set of distance values for the determinedsubset of voxels. A reduction in magnitude of the proximity informationmay correspond to a reduction in one or more distances between the firstvirtual object and one or more real or virtual surfaces, e.g., withinthe virtual three-dimensional space. The method may include determininga manipulation granularity. The manipulation granularity may correlatean input magnitude of user input received from the user to an outputmagnitude of one or more manipulations of the first virtual objectwithin the virtual three-dimensional space. The one or moremanipulations may include one or more of translation, rotation,transformation, and/or other manipulations. The method may includeadjusting the manipulation granularity based on the proximityinformation. Adjustment of the manipulation granularity may be performedsuch that the reduction in magnitude of the proximity informationcorresponds to an increase in the manipulation granularity. The methodmay include receiving particular user input from the user having aparticular input magnitude. The particular user input may represent arequest to manipulate the first virtual object within the virtualthree-dimensional space. The method may include manipulating the firstvirtual object within the virtual three-dimensional space in accordancewith the received particular user input. A particular output magnitudeof the manipulation of the first virtual object as requested may bebased on the particular input magnitude and the adjusted manipulationgranularity. The method may include effectuating presentation of theuser interface to the user through a client computing platform. The userinterface may depict the manipulation of the first virtual object withinthe virtual three-dimensional space.

As used herein, any association (or relation, or reflection, orindication, or correspondency) involving servers, processors, clientcomputing platforms, virtual objects, virtual volumes, determinations,selections, voxels, distances, values, surfaces, proximities,granularities, magnitudes, sensitivities, adjustments, manipulations,and/or another entity or object that interacts with any part of thesystem and/or plays a part in the operation of the system, may be aone-to-one association, a one-to-many association, a many-to-oneassociation, and/or a many-to-many association or N-to-M association(note that N and M may be different numbers greater than 1).

As used herein, the term “obtain” (and derivatives thereof) may includeactive and/or passive retrieval, determination, derivation, transfer,upload, download, submission, and/or exchange of information, and/or anycombination thereof. As used herein, the term “effectuate” (andderivatives thereof) may include active and/or passive causation of anyeffect. As used herein, the term “determine” (and derivatives thereof)may include measure, calculate, compute, estimate, approximate,generate, and/or otherwise derive, and/or any combination thereof.

These and other features, and characteristics of the present technology,as well as the methods of operation and functions of the relatedelements of structure and the combination of parts and economies ofmanufacture, will become more apparent upon consideration of thefollowing description and the appended claims with reference to theaccompanying drawings, all of which form a part of this specification,wherein like reference numerals designate corresponding parts in thevarious figures. It is to be expressly understood, however, that thedrawings are for the purpose of illustration and description only andare not intended as a definition of the limits of the invention. As usedin the specification and in the claims, the singular form of “a”, “an”,and “the” include plural referents unless the context clearly dictatesotherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system configured for providing, to a user, a userinterface for an environment that includes virtual objects, inaccordance with one or more implementations.

FIG. 2 illustrates a method for providing, to a user, a user interfacefor an environment that includes virtual objects, in accordance with oneor more implementations.

FIG. 3A-3B illustrate exemplary environments that include virtualobjects, as may be used by a system configured for providing a userinterface, in accordance with one or more implementations.

FIG. 4A-4B illustrate exemplary sets of voxels as may be used by asystem configured for providing a user interface, in accordance with oneor more implementations.

DETAILED DESCRIPTION

FIG. 1 illustrates a system 100 configured for providing and/orpresenting, to a user, a user interface 134 for an environment thatincludes virtual objects, in accordance with one or moreimplementations. In some implementations, the environment may be avirtual reality environment, which may immerse users in a fullyartificial digital environment. In some implementations, the environmentmay be an augmented reality environment, which may present views of userinterface 134 superimposed over views of the real world to users, suchthat both types of views are presented simultaneously. In someimplementations, positions of one or more virtual objects may be relatedto positions of one or more (corresponding) objects in the real world.In some implementations, the environment may be a mixed realityenvironment, in which virtual objects and real-world objects co-existand interact, e.g. in real-time. In some implementations, virtualobjects (and/or elements thereof) may be anchored to real-world objects(and/or elements thereof), thereby enabling a shared reference frameand/or world coordinate system between virtual objects and real-worldobjects.

In some implementations, system 100 may include one or more servers 102,one or more hardware processor(s) 128, electronic storage 126, and/orother components. Server(s) 102 may be configured to communicate withone or more client computing platforms 104 according to a client/serverarchitecture and/or other architectures. Client computing platform(s)104 may be configured to communicate with other client computingplatforms via server(s) 102 and/or according to a peer-to-peerarchitecture and/or other architectures. Users may access system 100 viaclient computing platform(s) 104. In some implementations, system 100may include an augmented reality device 130 that includes a display 132.

Server(s) 102 and/or hardware processor(s) 128 may be configured bymachine-readable instructions 106. Machine-readable instructions 106 mayinclude one or more instruction components. The instruction componentsmay include computer program components. The instruction components mayinclude one or more of virtual information component 108, voxeldetermination component 110, proximity component 112, manipulationgranularity component 114, granularity adjustment component 116, userinput component 118, object manipulation component 120, presentationcomponent 122, and/or other instruction components.

Virtual information component 108 may be configured to determine and/orobtain information regarding virtual objects in a virtualthree-dimensional space. In some implementations, the virtualthree-dimensional space may have a virtual three-dimensional volume. Insome implementations, virtual information component 108 may beconfigured to obtain information regarding virtual objects fromelectronic storage 126. In some implementations, positions of one ormore of the virtual objects may be related to positions of one or moreobjects in the real world. For example, a real-world three-dimensionalvolume may be scanned and constructed (or reconstructed) in a simulationor model, using a virtual three-dimensional space having a virtualthree-dimensional volume that corresponds to (at least part of) thereal-world three-dimensional volume. The virtual objects may include afirst virtual object, a second virtual object, a third virtual object,and so forth. By way of non-limiting example, FIG. 3A illustrates anexemplary environment 30 that includes a virtual object 31 (in thisexample virtual object 31 is a sphere), a second object 32, and a thirdobject 33. In some implementations, second object 32 may be a secondvirtual object and third object 33 may be a third virtual object.Alternatively, in some implementations, exemplary environment 30 mayinclude real-world objects (e.g., objects 32 and 33) viewed by and/orpresented to a user simultaneously with virtual object 31. As depictedin exemplary environment 30, a distance 31 a may represent the shortestdistance from any point on the surface of virtual object 31 to any pointon the surface of object 32. As depicted in exemplary environment 30, adistance 31 b may represent the shortest distance from any point on thesurface of virtual object 31 to any point on the surface of object 33.

The virtual three-dimensional space may include a set of voxels.Individual voxels may correspond to individual virtual three-dimensionalvolumes within a virtual three-dimensional space (e.g., within the samevirtual three-dimensional space that includes the virtual objectsdescribed in relation to virtual information component 108). In someimplementations, individual voxels may correspond to individual virtualthree-dimensional volumes such that the virtual three-dimensional spaceis divided as the three-dimensional volumes of the set of voxels. Insome implementations, the set of voxels may be a grid of voxels thatform at least part of the virtual three-dimensional volume of thevirtual three-dimensional space. By way of non-limiting example, FIG. 4Aillustrates an exemplary set of voxels 40 that may be used by system100. As depicted in FIG. 4A, set of voxels 40 is a 4×4×4 grid of voxelsthat includes an individual voxel 40 a. The volume of a particularvirtual object within the virtual three-dimensional volume formed by setof voxels 40 may be approximated by the sum of the volumes of a subsetof individual voxels. For example, in some implementations, anindividual voxel may be included in such a subset if the volume of theindividual voxel is completely within the volume of the particularvirtual object. Alternatively, in some implementations, an individualvoxel may be included in such a subset if the volume of the individualvoxel overlaps to any extent with the volume of the particular virtualobject. Alternatively, in some implementations, an individual voxel maybe included in such a subset if the volume of the individual voxeloverlaps for at least a predetermined percentage (say, 50%) with thevolume of the particular virtual object. Alternate definitions forinclusion or exclusion of such a subset are envisioned within the scopeof this disclosure. As the size of individual voxels is reduced and/orthe resolution of the set of voxels is increased, the shape and volumeof a subset of voxels may more closely approximate the particularvirtual object. By way of non-limiting example, FIG. 4B illustrates anexemplary set of voxels 41 that may be used by system 100. As depictedin FIG. 4B, set of voxels 41 is an 8×8×8 grid of voxels that includes anindividual voxel 41 a. In some implementations, set of voxels 41 may beformed by dividing each voxel in set of voxels 40 (FIG. 4A) into 8smaller voxels.

Individual voxels may be associated with individual distance values. Theindividual distance values may represent distances from the individualvoxels to real or virtual surfaces, e.g., within the virtualthree-dimensional space. In some implementations, an individual distancevalue associated with an individual voxel may represent the shortestdistance from the individual voxel to any surface within the virtualthree-dimensional space. In some implementations, an individual distancevalue associated with an individual voxel may represent the shortestdistance from the individual voxel to any surface within the virtualthree-dimensional space of a subset of virtual objects. For example,subsequent to a user selecting a particular virtual object, anindividual distance value associated with an individual voxel mayrepresent the shortest distance from the individual voxel to any surfacewithin the virtual three-dimensional space of the subset of virtualobjects that excludes the selected particular virtual object. By way ofnon-limiting example, in FIG. 3A, a user may have selected virtualobject 31. Assume the left-most point of virtual object 31 intersects afirst voxel (not depicted), and the right-most point of virtual object31 intersects a second voxel (not depicted). As depicted in exemplaryenvironment 30, a distance 31 a may represent the shortest distance fromthe first voxel to any point on the surface of any other virtual objectwithin exemplary environment 30 (i.e. the closest surface of any virtualobject except selected virtual object 31, which in this case may be apoint on the surface of virtual object 32). As depicted in exemplaryenvironment 30, a distance 31 b may represent the shortest distance fromthe second voxel to any point on the surface of any other virtual objectwithin exemplary environment 30 (i.e. the closest surface of any virtualobject except selected virtual object 31, which in this case may be apoint on the surface of virtual object 33). In some implementations,individual distance values associated with the individual voxels may beTruncated Signed Distance Function (TSDF) values.

Referring to FIG. 1, subset determination component 110 may beconfigured to determine subsets of voxels from a set of voxels such thatthe subsets of voxels encompasses three-dimensional volumes thatincludes all or part of particular virtual objects, such asuser-selected virtual objects. For example, for a particular virtualobject selected by a user, subset determination component 110 may beconfigured to determine a particular subset of voxels (e.g., from a gridof voxels that forms a particular virtual three-dimensional volume) thatapproximates and/or encompasses the volume and/or the external surfaceof the particular virtual object. In some implementations, system 100may be configured to determine a three-dimensional bounding box thatfully encompasses a selected virtual object. Subset determinationcomponent may be configured to determine a subset of voxels such thatits combined volume approximated and/or matches the volume of thebounding box.

Proximity component 112 may be configured to determine proximityinformation for virtual objects, including but not limited touser-selected virtual objects. In some implementations, the particularproximity information for a particular virtual object in a virtualthree-dimensional space may be the distance to the closest surfaceand/or object within the virtual three-dimensional space that is not (asurface of) the particular virtual object. Determination of theproximity information may be based on aggregating a set of distancevalues for a particular set of voxels, such as the subset of voxelsdetermined by subset determination component 110. Determining theproximity information for a particular virtual object may includedetermining a minimum absolute distance in the set of distance valuesfor the particular set of voxels, such as the subset of voxelsdetermined by subset determination component 110. For example, as theparticular virtual object is moved closer to the nearest other object,the (magnitude of) proximity information for the particular virtualobject may become smaller. In some implementations, a reduction inmagnitude of the proximity information may correspond to a reduction inone or more distances between the first virtual object and one or moresurfaces within the virtual three-dimensional space. By way ofnon-limiting example, in FIG. 3A, the value of distance 31 a mayrepresent the proximity information of virtual object 31, which is theshortest distance from virtual object 31 to any surface of any othervirtual object within exemplary environment 30. Assume a user movesvirtual object closer to virtual object 32, as depicted in FIG. 3B andexemplary environment 35 (compared to FIG. 3A and exemplary environment30). In FIG. 3B, the value of a distance 31 c may represent theproximity information of virtual object 31, which is the shortestdistance from virtual object 31 to any surface of any other virtualobject within exemplary environment 35, in this case virtual object 32.As depicted in FIGS. 3A and 3B, as virtual object 31 is moved closer tothe nearest other object, virtual object 32, the (magnitude of the)proximity information for virtual object 31 may become smaller, sincedistance 31 c may be smaller than distance 31 a. A reduction inmagnitude of the proximity information of virtual object 31 (whencomparing FIG. 3A to FIG. 3B) may correspond to a reduction in theshortest distance between virtual object 31 and the nearest (surface of)another virtual object within the virtual three-dimensional space.

Referring to FIG. 1, user input component 118 may be configured toreceive particular user input from the user. In some implementations,particular user input may have a particular input magnitude. User inputmay represent a selection of one or more virtual objects from thevirtual objects in a virtual three-dimensional space. In someimplementations, user input may represent a selection of one or moremanipulations to be applied, for example to a selected virtual object.In some implementations, the particular user input may represent arequest to manipulate a selected virtual object within the virtualthree-dimensional space. By way of non-limiting example, the one or moremanipulations may include one or more of translation, rotation,transformation, and/or other manipulations. In some implementations, atransformation may include one or more of a translation, rotation,scaling, reflection, and/or shearing. For example, in someimplementations, manipulations may include increasing or decreasing therelative size of a selected virtual object. For example, in someimplementations, manipulations may include zooming in or zooming outwithin user interface 134. Other manipulations as well as combinationsof manipulations are envisioned within the scope of this disclosure. Insome implementations, a particular manipulation of a particular selectedvirtual object may include a combination of one or more of atranslation, a rotation, and/or a scaling.

Referring to FIG. 1, manipulation granularity component 114 may beconfigured to determine a manipulation granularity and/or a manipulationsensitivity, which may be a characteristic of user interface 134 and/orits environment (including the virtual three-dimensional space). Themanipulation granularity may correlate an input magnitude of user inputreceived from the user to an output magnitude of one or moremanipulations of a selected virtual object within the virtualthree-dimensional space. In some implementations, input sensitivitydefines how sensitive manipulations of selected virtual objects are toinput received from user.

User input may be received through a keyboard, buttons, touchscreen,mouse, voice commands, body movement, hand and/or finger gestures,and/or other ways to convey user input to system 100. Individual typesof user input may correspond to an input magnitude, such that user inputreceived at different times may be distinguished and have differenteffects by virtue of the input magnitude. For example, a first mousemovement may be a few mm or a small distance, whereas a second mousemovement may be a few inches or a larger distance. For example, a firsthand gesture may involve moving hands or fingers by an inch, whereas asecond hand gesture may involve moving hands or fingers by 6-12 inches.For example, a first body movement may involve rotating the head or bodyby 10 degrees, whereas a second body movement may involve rotating thehead or body by 60 degrees. The first mouse movement may have a smallermagnitude than the second mouse movement, the first hand gesture mayhave a smaller magnitude than the second hand gesture, and the firstbody movement may have a smaller magnitude than the second bodymovement.

Individual types of manipulations of virtual objects may correspond toan output magnitude, such that manipulations performed at differenttimes may be distinguished and have different effects by virtue of theoutput magnitude. For example, a first object displacement may be a fewmm or a small number of pixels/voxels, whereas a second objectdisplacement be a few inches or a larger number of pixels/voxels. Forexample, a first rotational movement may involve rotating the selectedvirtual object by 10 degrees, whereas a second rotational movement mayinvolve rotating the selected virtual object by 60 degrees. The firstobject displacement may have a smaller magnitude than the second objectdisplacement, and the first rotational movement may have a smallermagnitude than the second rotational movement.

In some implementations, the manipulation granularity may be representedby a ratio defined by the input magnitude of user input received fromthe user divided by the output magnitude of the one or moremanipulations of the selected virtual object within the virtualthree-dimensional space. Other arithmetic and/or mathematical operationsinvolving the input magnitude and the output magnitude are envisionedwithin the scope of this disclosure to derive the manipulationgranularity and/or the manipulation sensitivity. In someimplementations, the input magnitude and the output magnitude may becorrelated.

Object manipulation component 120 may be configured to manipulate a(selected) virtual object within the virtual three-dimensional space bya (selected) type of manipulation, and in accordance with received userinput. In some implementations, manipulation of a particular selectedvirtual object may be based on a correlation of a particular inputmagnitude of received user input to a particular output magnitude of oneor more particular (selected) manipulations. For example, at arelatively low or coarse level of manipulation granularity a receiveduser input having a small input magnitude may result in manipulation(e.g., movement of the selected virtual object) having a relativelylarge output magnitude. For example, a small mouse movement of 1 inchmay result in moving the selected virtual object fast and/or far withinuser interface 134. Conversely, at a relatively high or fine level ofmanipulation granularity a received user input having a larger inputmagnitude may result in manipulation (e.g., movement of the selectedvirtual object) having a relatively small output magnitude. For example,a relatively larger mouse movement of 6-12 inches may result in movingthe selected virtual object slowly and/or a short distance within userinterface 134. A user may prefer a coarse manipulation granularity whenspeed is more important than accuracy, but a fine manipulationgranularity when accuracy is more important than speed.

Granularity adjustment component 116 may be configured to adjust themanipulation granularity and/or the manipulation sensitivity based onone or more determinations by proximity component 112. For example,granularity adjustment component 116 may be configured to adjust themanipulation granularity based on the determined proximity information.Adjustment of the manipulation granularity may be performed such thatthe reduction in magnitude of the proximity information corresponds toan increase in the manipulation granularity. For example, prior to aparticular adjustment of the manipulation granularity, the manipulationgranularity may be relatively coarse, thus allowing rapid but notparticularly accurate manipulations of a selected virtual object as longas the selected object is relatively far from other virtual objects. Asone or move virtual objects move, the distance between the selectedvirtual object as the nearest other object (or the nearest surface ofanother object) may decrease. In other words, the magnitude of theproximity information of the selected object is reduced due to movementof virtual objects. Granularity adjustment component 116 may increasethe manipulation granularity (e.g., from coarse to fine), thus allowingaccurate but relatively slow manipulations of the selected virtualobject. Adjustments in the manipulation granularity and/or manipulationsensitivity are not limited to two levels (e.g., coarse and fine), butmay, in some implementations, have 3, 4, 5, 10, or more differentlevels. In some implementations, adjustments in the manipulationgranularity and/or manipulation sensitivity may be gradual. For example,the adjustments may be smooth such that users experience a gradualtransition between levels rather than discrete steps in differentlevels. In some implementations, the correlation between the inputmagnitude and the output magnitude may change due to adjustment bygranularity adjustment component 116. For example, a first correlationmay change to a second correlation that is different from the firstcorrelation due to the adjustment

Object manipulation component 120 may be configured to manipulatevirtual objects within the virtual three-dimensional space. In someimplementations, object manipulation component 120 may manipulatevirtual objects in accordance with received particular user input. Aparticular output magnitude of a manipulation of a selected virtualobject as requested may be based on the particular input magnitude andthe current and/or adjusted manipulation granularity. For example, a1-inch mouse movement as the received user input may effectuate arelatively large movement of a selected virtual object within userinterface 134 responsive to the manipulation granularity being coarseand/or low. Once the selected virtual object approaches another virtualobject and the manipulation granularity is adjusted to a fine level orrelatively higher level, the same 1-inch mouse movement may effectuate arelatively small movement of the selected virtual object (compared tothe previous movement of the same object).

Presentation component 122 may be configured to effectuate presentationof user interface 134 to the user. In some implementations, a userinterface the same as or similar to user interface 134 may be presentedthrough client computing platform 104. In some implementations, userinterface 134 may be presented through display 132 of augmented realitydevice 130. The presentation of user interface 134 to the user may beaccomplished by presenting views of user interface 134 superimposed overviews of the real world such that both views are presented to the usersimultaneously. User interface 134 may depict the manipulation of auser-selected virtual object within the virtual three-dimensional space.In some implementations, user interface 134 may be presented such thatchanges in color information are based on the proximity information.

In some implementations, server(s) 102, client computing platform(s)104, and/or external resources 124 may be operatively linked via one ormore electronic communication links. For example, such electroniccommunication links may be established, at least in part, via one ormore networks 13 such as the Internet and/or other networks. It will beappreciated that this is not intended to be limiting, and that the scopeof this disclosure includes implementations in which server(s) 102,client computing platform(s) 104, and/or external resources 124 may beoperatively linked via some other communication media.

A given client computing platform 104 may include one or more processorsconfigured to execute computer program components. The computer programcomponents may be configured to enable an expert or user associated withthe given client computing platform 104 to interface with system 100and/or external resources 124, and/or provide other functionalityattributed herein to client computing platform(s) 104. By way ofnon-limiting example, the given client computing platform 104 mayinclude one or more of a desktop computer, a laptop computer, a handheldcomputer, a tablet computing platform, a NetBook, a Smartphone, a gamingconsole, and/or other computing platforms.

External resources 124 may include sources of information outside ofsystem 100, external entities participating with system 100, and/orother resources. In some implementations, some or all of thefunctionality attributed herein to external resources 124 may beprovided by resources included in system 100.

Server(s) 102 may include electronic storage 126, one or more processors128, and/or other components. Server(s) 102 may include communicationlines, or ports to enable the exchange of information with a networkand/or other computing platforms. Illustration of server(s) 102 in FIG.1 is not intended to be limiting. Server(s) 102 may include a pluralityof hardware, software, and/or firmware components operating together toprovide the functionality attributed herein to server(s) 102. Forexample, server(s) 102 may be implemented by a cloud of computingplatforms operating together as server(s) 102.

Electronic storage 126 may comprise non-transitory storage media thatelectronically stores information. The electronic storage media ofelectronic storage 126 may include one or both of system storage that isprovided integrally (i.e., substantially non-removable) with server(s)102 and/or removable storage that is removably connectable to server(s)102 via, for example, a port (e.g., a USB port, a firewire port, etc.)or a drive (e.g., a disk drive, etc.). Electronic storage 126 mayinclude one or more of optically readable storage media (e.g., opticaldisks, etc.), magnetically readable storage media (e.g., magnetic tape,magnetic hard drive, floppy drive, etc.), electrical charge-basedstorage media (e.g., EEPROM, RAM, etc.), solid-state storage media(e.g., flash drive, etc.), and/or other electronically readable storagemedia. Electronic storage 126 may include one or more virtual storageresources (e.g., cloud storage, a virtual private network, and/or othervirtual storage resources). Electronic storage 126 may store softwarealgorithms, information determined by processor(s) 128, informationreceived from server(s) 102, information received from client computingplatform(s) 104, and/or other information that enables server(s) 102 toFunction as described herein.

Processor(s) 128 may be configured to provide information processingcapabilities in server(s) 102. As such, processor(s) 128 may include oneor more of a digital processor, an analog processor, a digital circuitdesigned to process information, an analog circuit designed to processinformation, a state machine, and/or other mechanisms for electronicallyprocessing information. Although processor(s) 128 is shown in FIG. 1 asa single entity, this is for illustrative purposes only. In someimplementations, processor(s) 128 may include a plurality of processingunits. These processing units may be physically located within the samedevice, or processor(s) 128 may represent processing functionality of aplurality of devices operating in coordination. Processor(s) 128 may beconfigured to execute components 108, 110, 112, 114, 116, 118, 120,and/or 122, and/or other components. Processor(s) 128 may be configuredto execute components 108, 110, 112, 114, 116, 118, 120, and/or 122,and/or other components by software; hardware; firmware; somecombination of software, hardware, and/or firmware; and/or othermechanisms for configuring processing capabilities on processor(s) 128.As used herein, the term “component” may refer to any component or setof components that perform the functionality attributed to thecomponent. This may include one or more physical processors duringexecution of processor readable instructions, the processor readableinstructions, circuitry, hardware, storage media, or any othercomponents.

It should be appreciated that although components 108, 110, 112, 114,116, 118, 120, and/or 122 are illustrated in FIG. 1 as being implementedwithin a single processing unit, in implementations in whichprocessor(s) 128 includes multiple processing units, one or more ofcomponents 108, 110, 112, 114, 116, 118, 120, and/or 122 may beimplemented remotely from the other components. The description of thefunctionality provided by the different components 108, 110, 112, 114,116, 118, 120, and/or 122 described below is for illustrative purposes,and is not intended to be limiting, as any of components 108, 110, 112,114, 116, 118, 120, and/or 122 may provide more or less functionalitythan is described. For example, one or more of components 108, 110, 112,114, 116, 118, 120, and/or 122 may be eliminated, and some or all of itsfunctionality may be provided by other ones of components 108, 110, 112,114, 116, 118, 120, and/or 122. As another example, processor(s) 128 maybe configured to execute one or more additional components that mayperform some or all of the functionality attributed below to one ofcomponents 108, 110, 112, 114, 116, 118, 120, and/or 122.

FIG. 2 illustrates a method 200 for providing and/or presenting, to auser, a user interface for an environment that includes virtual objects,in accordance with one or more implementations. The operations of method200 presented below are intended to be illustrative. In someimplementations, method 200 may be accomplished with one or moreadditional operations not described, and/or without one or more of theoperations discussed. Additionally, the order in which the operations ofmethod 200 are illustrated in FIG. 2 and described below is not intendedto be limiting.

In some implementations, method 200 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 200 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 200.

An operation 202 may include obtaining, from electronic storage,information regarding virtual objects in a virtual three-dimensionalspace that has a virtual three-dimensional volume. The virtual objectsmay include a first virtual object. The virtual three-dimensional spacemay include a set of voxels. Individual voxels correspond to individualvirtual three-dimensional volumes within the virtual three-dimensionalspace. Individual voxels may be associated with individual distancevalues. The individual distance values may represent distances from theindividual voxels to surfaces within the virtual three-dimensionalspace. Operation 202 may be performed by one or more hardware processorsconfigured by machine-readable instructions including a component thatis the same as or similar to virtual information component 108, inaccordance with one or more implementations.

An operation 204 may include determining a subset of voxels from the setof voxels such that the subset of voxels encompasses a three-dimensionalvolume that includes at least part of a first external surface of thefirst virtual object. Operation 204 may be performed by one or morehardware processors configured by machine-readable instructionsincluding a component that is the same as or similar to voxeldetermination component 110, in accordance with one or moreimplementations.

An operation 206 may include determining proximity information for thefirst virtual object. Determination of the proximity information may bebased on aggregating a set of distance values for the determined subsetof voxels. A reduction in magnitude of the proximity information maycorrespond to a reduction in one or more distances between the firstvirtual object and one or more surfaces within the virtualthree-dimensional space. Operation 206 may be performed by one or morehardware processors configured by machine-readable instructionsincluding a component that is the same as or similar to proximitycomponent 112, in accordance with one or more implementations.

An operation 208 may include determining a manipulation granularity. Themanipulation granularity may correlate an input magnitude of user inputreceived from the user to an output magnitude of one or moremanipulations of the first virtual object within the virtualthree-dimensional space. The one or more manipulations may include oneor more of translation, rotation, transformation, and/or othermanipulations. Operation 208 may be performed by one or more hardwareprocessors configured by machine-readable instructions including acomponent that is the same as or similar to manipulation granularitycomponent 114, in accordance with one or more implementations.

An operation 210 may include adjusting the manipulation granularitybased on the proximity information. Adjustment of the manipulationgranularity may be performed such that the reduction in magnitude of theproximity information corresponds to an increase in the manipulationgranularity. Operation 210 may be performed by one or more hardwareprocessors configured by machine-readable instructions including acomponent that is the same as or similar to granularity adjustmentcomponent 116, in accordance with one or more implementations.

An operation 212 may include receiving particular user input from theuser having a particular input magnitude. The particular user input mayrepresent a request to manipulate the first virtual object within thevirtual three-dimensional space. Operation 212 may be performed by oneor more hardware processors configured by machine-readable instructionsincluding a component that is the same as or similar to user inputcomponent 118, in accordance with one or more implementations.

An operation 214 may include manipulating the first virtual objectwithin the virtual three-dimensional space in accordance with thereceived particular user input. A particular output magnitude of themanipulation of the first virtual object as requested may be based onthe particular input magnitude and the adjusted manipulationgranularity. Operation 214 may be performed by one or more hardwareprocessors configured by machine-readable instructions including acomponent that is the same as or similar to object manipulationcomponent 120, in accordance with one or more implementations.

An operation 216 may include effectuating presentation of the userinterface to the user through a client computing platform. The userinterface may depict the manipulation of the first virtual object withinthe virtual three-dimensional space. Operation 216 may be performed byone or more hardware processors configured by machine-readableinstructions including a component that is the same as or similar topresentation component 122, in accordance with one or moreimplementations.

Although the present technology has been described in detail for thepurpose of illustration based on what is currently considered to be themost practical and preferred implementations, it is to be understoodthat such detail is solely for that purpose and that the technology isnot limited to the disclosed implementations, but, on the contrary, isintended to cover modifications and equivalent arrangements that arewithin the spirit and scope of the appended claims. For example, it isto be understood that the present technology contemplates that, to theextent possible, one or more features of any implementation can becombined with one or more features of any other implementation.

What is claimed is:
 1. A system configured for providing, to a user, auser interface for an environment that includes virtual objects, thesystem comprising: one or more hardware processors configured bymachine-readable instructions to: obtain, from electronic storage,information regarding virtual objects in a virtual three-dimensionalspace that has a virtual three-dimensional volume, wherein the virtualobjects include a first virtual object, wherein the virtualthree-dimensional space includes a set of voxels, wherein individualvoxels correspond to individual virtual three-dimensional volumes withinthe virtual three-dimensional space, wherein the individual voxels areassociated with one or more individual distance values, wherein the oneor more individual distance values represent distances from theindividual voxels to surfaces within the virtual three-dimensionalspace; determine a subset of voxels from the set of voxels such that thesubset of voxels encompasses a three-dimensional volume that includes atleast part of a first external surface of the first virtual object;determine proximity information for the first virtual object, whereindetermination of the proximity information is based on aggregating a setof distance values for the determined subset of voxels, wherein areduction in magnitude of the proximity information corresponds to areduction in one or more distances between the first virtual object andone or more surfaces within the virtual three-dimensional space;determine a manipulation granularity, wherein the manipulationgranularity correlates an input magnitude of user input received fromthe user to an output magnitude of one or more manipulations of thefirst virtual object within the virtual three-dimensional space, whereinthe one or more manipulations include one or more of translation,rotation, and/or transformation, and wherein determination of themanipulation granularity is based on the proximity information such thatthe reduction in magnitude of the proximity information corresponds toan increase in the manipulation granularity; receive particular userinput from the user having a particular input magnitude, wherein theparticular user input represents a request to manipulate the firstvirtual object within the virtual three-dimensional space; manipulatethe first virtual object within the virtual three-dimensional space inaccordance with the received particular user input, wherein a particularoutput magnitude of the manipulation of the first virtual object asrequested is based on the particular input magnitude and the determinedmanipulation granularity; and effectuate presentation of the userinterface to the user through a client computing platform, wherein theuser interface depicts the manipulation of the first virtual objectwithin the virtual three-dimensional space.
 2. The system of claim 1,wherein the environment is a virtual reality environment.
 3. The systemof claim 1, wherein the environment is an augmented reality environment,wherein the presentation of the user interface to the user isaccomplished by presenting views of the user interface superimposed overviews of the real world such that both views are presented to the usersimultaneously, wherein positions of one or more of the virtual objectsare related to positions of one or more objects in the real world. 4.The system of claim 1, wherein the manipulation granularity isrepresented by a ratio defined by the input magnitude of user inputreceived from the user divided by the output magnitude of the one ormore manipulations of the first virtual object within the virtualthree-dimensional space.
 5. The system of claim 1, wherein the userinput further represents a selection of the first virtual object fromthe virtual objects in the virtual three-dimensional space.
 6. Thesystem of claim 1, wherein the set of voxels is a grid of voxels thatform at least part of the virtual three-dimensional volume of thevirtual three-dimensional space.
 7. The system of claim 1, whereindetermining the proximity information for the first virtual object basedon aggregating the set of distance values for the determined subset ofvoxels includes determining a minimum absolute distance in the set ofdistance values for the determined subset of voxels.
 8. The system ofclaim 1, wherein user interface is presented such that changes in colorinformation are based on the proximity information.
 9. The system ofclaim 1, wherein the received user input corresponds to manual motion bythe user.
 10. A method for providing, to a user, a user interface for anenvironment that includes virtual objects, the method comprising:obtaining, from electronic storage, information regarding virtualobjects in a virtual three-dimensional space that has a virtualthree-dimensional volume, wherein the virtual objects include a firstvirtual object, wherein the virtual three-dimensional space includes aset of voxels, wherein individual voxels correspond to individualvirtual three-dimensional volumes within the virtual three-dimensionalspace, wherein the individual voxels are associated with one or moreindividual distance values, wherein the one or more individual distancevalues represent distances from the individual voxels to surfaces withinthe virtual three-dimensional space; determining a subset of voxels fromthe set of voxels such that the subset of voxels encompasses athree-dimensional volume that includes at least part of a first externalsurface of the first virtual object; determining proximity informationfor the first virtual object, wherein determination of the proximityinformation is based on aggregating a set of distance values for thedetermined subset of voxels, wherein a reduction in magnitude of theproximity information corresponds to a reduction in one or moredistances between the first virtual object and one or more surfaceswithin the virtual three-dimensional space; determining a manipulationgranularity, wherein the manipulation granularity correlates an inputmagnitude of user input received from the user to an output magnitude ofone or more manipulations of the first virtual object within the virtualthree-dimensional space, wherein the one or more manipulations includeone or more of translation, rotation, and/or transformation, and whereindetermining the manipulation granularity is based on the proximityinformation such that the reduction in magnitude of the proximityinformation corresponds to an increase in the manipulation granularity;receiving particular user input from the user having a particular inputmagnitude, wherein the particular user input represents a request tomanipulate the first virtual object within the virtual three-dimensionalspace; manipulating the first virtual object within the virtualthree-dimensional space in accordance with the received particular userinput, wherein a particular output magnitude of the manipulation of thefirst virtual object as requested is based on the particular inputmagnitude and the determined manipulation granularity; and effectuatingpresentation of the user interface to the user through a clientcomputing platform, wherein the user interface depicts the manipulationof the first virtual object within the virtual three-dimensional space.11. The method of claim 10, wherein the environment is a virtual realityenvironment.
 12. The method of claim 10, wherein the environment is anaugmented reality environment, wherein the presentation of the userinterface to the user is accomplished by presenting views of the userinterface superimposed over views of the real world such that both viewsare presented to the user simultaneously, wherein positions of one ormore of the virtual objects are related to positions of one or moreobjects in the real world.
 13. The method of claim 10, wherein themanipulation granularity is represented by a ratio defined by the inputmagnitude of user input received from the user divided by the outputmagnitude of the one or more manipulations of the first virtual objectwithin the virtual three-dimensional space.
 14. The method of claim 10,wherein the user input further represents a selection of the firstvirtual object from the virtual objects in the virtual three-dimensionalspace.
 15. The method of claim 10, wherein the set of voxels is a gridof voxels that form at least part of the virtual three-dimensionalvolume of the virtual three-dimensional space.
 16. The method of claim10, wherein determining the proximity information for the first virtualobject based on aggregating the set of distance values for thedetermined subset of voxels includes determining a minimum absolutedistance in the set of distance values for the determined subset ofvoxels.
 17. The method of claim 10, wherein user interface is presentedsuch that changes in color information are based on the proximityinformation.
 18. The method of claim 10, wherein the received user inputcorresponds to manual motion by the user.